#include <stdio.h>
#include <stdlib.h>
#include "single_linked_list.cpp"

// 获取单链表倒数第k个结点
// 双指针发
// 快指针先出发  慢指针在k个后再出发
// 当快指针遍历到头时 慢指针所在位置就是倒数第k个结点
LNode *GetNumKToLast(LinkedList &L, int k) {
	LNode *fast = L, *slow = L;
	int num = 0;
	while(fast) {
		fast = fast->next;
		if(num++ >= k)
			slow = slow->next;
	}
	return slow;
}


int main() {
    LinkedList L;
    InitList(L);

    // 插入
    ListAppend(L, 2);
    ListAppend(L, 5);
    ListAppend(L, 9);
    ListAppend(L, 7);
    ListAppend(L, 3);
    ListAppend(L, 6);
    PrintList(L);

	LNode *r = GetNumKToLast(L,3);
	printf("===> %d\n",r->data);
	return 0;
}
